home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / Libraries / SAT 2.4.0 / SAT / Add-ons / Load faces / FaceFromICN.p next >
Encoding:
Text File  |  1997-03-12  |  927 b   |  46 lines  |  [TEXT/PJMM]

  1. unit FaceFromICN;
  2.  
  3. interface
  4.     uses
  5. {$ifc UNDEFINED THINK_PASCAL}
  6.         Types, QuickDraw, Icons, Resources, Memory,
  7. {$endc}
  8.         SAT;
  9.  
  10.     function SATGetFaceFromICN (id: Integer): FacePtr;
  11.  
  12. implementation
  13.  
  14.     function SATGetFaceFromICN (id: Integer): FacePtr;
  15.         var
  16.             h: Handle;
  17.             r: Rect;
  18.             f: FacePtr;
  19.             p: Ptr;
  20.     begin
  21.         SATGetFaceFromICN := nil;
  22.         h := GetResource('ICN#', id);
  23.         if h = nil then
  24.             Exit(SATGetFaceFromICN);
  25.         SetRect(r, 0, 0, 32, 32);
  26.         f := SATNewFace(r);
  27.         if f = nil then
  28.             Exit(SATGetFaceFromICN);
  29.  
  30. {Copy icon}
  31.         p := h^;
  32.         BlockMove(p, f^.iconMask.baseAddr, 128);
  33. {Copy to colorData}
  34.         SATSetPortFace(f);
  35.         CopyBits(f^.iconMask, gSAT.iconPort.port^.portBits, r, r, srcCopy, nil);
  36. {Copy mask}
  37.         p := Ptr(Longint(h^) + 128);
  38.         BlockMove(p, f^.iconMask.baseAddr, 128);
  39. {Tell SAT to clean up after us! (Update the mask region etc.)}
  40.         SATChangedFace(f);
  41.         SATGetFaceFromICN := f;
  42.     end; {SATGetFaceFromICN}
  43.  
  44. end.
  45.  
  46.